package org.su.mamamiya.core.ast;

import com.squareup.javapoet.AnnotationSpec;
import lombok.Data;

import javax.lang.model.type.TypeMirror;


/**
 * Created by yangchuan on 2019-09-28 13:50
 */
@Data
public class Param {

    private String name;
    /**
     * 参数来源类型，header --> 请求参数的获取：@RequestHeader
     * 	        · query --> 请求参数的获取：@RequestParam
     * 	        · path（用于restful接口）--> 请求参数的获取：@PathVariable
     * 	        · body（请求体）-->  @RequestBody User user
     * 	        · form（普通表单提交）
     */
    private String paramType;

    /**
     * 是否必须
     */
    private boolean required;

    /**
     * 参数类型，默认String，其它值dataType="Integer"
     */
    private String dataType;

    private TypeMirror dataTypeClass;

    /**
     * 参数的默认值
     */
    private Object defaultValue;

    /**
     * 是否是数组
     */
    private boolean allowMultiple;

    /**
     * 参数注解构建器
     */
    private AnnotationSpec.Builder paramAnnotationBuilder;

    /**
     * 源码是否已经拥有参数注解
     */
    private boolean existAnnotation;
}
